package br.edu.infnet.avaliacao.dao.hibernate;

import java.io.Serializable;
import java.util.Date;

public class Criterio implements Serializable {

	private static final long serialVersionUID = -1954156768479166704L;

	private Object objeto;

	private Integer tamanhoPagina = new Integer(0);

	private Integer registroInicial = new Integer(0);

	private Integer totalRegistros = new Integer(0);

	private String ordenadoPor;

	private boolean ascendente = false;

	private Date dataInicio;

	private Date dataFim;

	public void criarPeriodo() {
		if (dataInicio != null) {
			dataInicio = Util.criarDataInicio(dataInicio).getTime();
			dataFim = Util.criarDataFim(dataFim).getTime();
		}
	}

	public Date getDataInicio() {
		return dataInicio;
	}

	public void setDataInicio(Date dataInicio) {
		this.dataInicio = dataInicio;
	}

	public Date getDataFim() {
		return dataFim;
	}

	public void setDataFim(Date dataFim) {
		this.dataFim = dataFim;
	}

	public Criterio() {

	}

	public Criterio(Date dataInicio, Date dataFim) {
		this.dataInicio = dataInicio;
		this.dataFim = dataFim;
	}

	public Criterio(Object objeto) {
		this.objeto = objeto;
	}

	public boolean isAscendente() {
		return ascendente;
	}

	public void setAscendente(boolean ascendente) {
		this.ascendente = ascendente;
	}

	public Object getObjeto() {
		return objeto;
	}

	public String getOrdenadoPor() {
		return ordenadoPor;
	}

	public Integer getRegistroInicial() {
		return registroInicial;
	}

	public Integer getTamanhoPagina() {

		return (tamanhoPagina <= 0) ? 20 : tamanhoPagina;
	}

	public Integer getTotalRegistros() {
		return (totalRegistros <= 0) ? 100 : totalRegistros;
	}

	public void setObjeto(Object objeto) {
		this.objeto = objeto;
	}

	public void setOrdenadoPor(String ordenadoPor) {
		this.ordenadoPor = ordenadoPor;
	}

	public void setRegistroInicial(Integer registroInicial) {
		this.registroInicial = registroInicial;
	}

	public void setTamanhoPagina(Integer tamanhoPagina) {
		this.tamanhoPagina = tamanhoPagina;
	}

	public void setTotalRegistros(Integer totalRegistros) {
		this.totalRegistros = totalRegistros;
	}

	@Override
	public String toString() {
		return "Criteria [objeto=" + objeto + ", tamanhoPagina="
				+ tamanhoPagina + ", registroInicial=" + registroInicial
				+ ", totalRegistros=" + totalRegistros + ", ordenadoPor="
				+ ordenadoPor + ", ascendente=" + ascendente + ", dataInicio="
				+ dataInicio + ", dataFim=" + dataFim + "]";
	}

}
